package com.dw.etl.core.service;
import com.dw.etl.common.util.UUIDUtil;
import  com.dw.etl.common.vo.PaginationVO;
import com.dw.etl.core.bean.model.EtlBaseField;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import com.dw.etl.core.api.MdMedTbFdService;
import com.dw.etl.core.mapper.MdMedTbFdMapper;
import com.dw.etl.core.bean.model.MdMedTbFd;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;

/**
 * mdMedTbFd服务实现类
 * Created by hozeData on 2021/06/17.
 */
@Service
@Transactional
public class MdMedTbFdServiceImpl implements MdMedTbFdService{

    private static final Logger LOGGER = LoggerFactory.getLogger(MdMedTbFdServiceImpl.class);

    @Autowired
    private MdMedTbFdMapper mdMedTbFdMapper;

    @Override
    public int insert(MdMedTbFd mdMedTbFd) {
        if(StringUtils.isEmpty(mdMedTbFd.getPk())){
            String uuid32 = UUIDUtil.getUUID32();
            mdMedTbFd.setPk(uuid32);
        }
        return mdMedTbFdMapper.insert(mdMedTbFd);
    }

    @Override
    public int insertSelective(MdMedTbFd mdMedTbFd)  {
        if(StringUtils.isEmpty(mdMedTbFd.getPk())){
            String uuid32 = UUIDUtil.getUUID32();
            mdMedTbFd.setPk(uuid32);
        }
        return mdMedTbFdMapper.insertSelective(mdMedTbFd);
    }

    @Override
    public int deleteById(String idMedTbFd)  {
        return mdMedTbFdMapper.deleteByPrimaryKey(idMedTbFd);
    }

    @Override
    public int save(List<MdMedTbFd> list) {
        MdMedTbFd modelField = new MdMedTbFd();
        modelField.setIdMedTb(list.get(0).getIdMedTb());
        mdMedTbFdMapper.deleteByModel(modelField);
        for(MdMedTbFd etlBaseField:list) {
            this.insertSelective(etlBaseField);
        }
        return 0;
    }

    @Override
    public int updateByIdSelective(MdMedTbFd mdMedTbFd)  {

        return mdMedTbFdMapper.updateByPrimaryKeySelective(mdMedTbFd);
    }

    @Override
    public int updateById(MdMedTbFd mdMedTbFd)  {
        return mdMedTbFdMapper.updateByPrimaryKey(mdMedTbFd);
    }

    @Override
    public MdMedTbFd getById(String idMedTbFd)  {
        return mdMedTbFdMapper.selectByPrimaryKey(idMedTbFd);
    }

    @Override
    public List<MdMedTbFd> findByModel(MdMedTbFd mdMedTbFd)  {
        return mdMedTbFdMapper.findByModel(mdMedTbFd);
    }

    @Override
    public PaginationVO<MdMedTbFd> findPageByModel(MdMedTbFd mdMedTbFd, Integer pageNum, Integer pageSize) {
        PageHelper.startPage(pageNum == null? 1 : pageNum, pageSize == null? 10 : pageSize);
        List<MdMedTbFd> quesList = mdMedTbFdMapper.findByModel(mdMedTbFd);
        PageInfo<MdMedTbFd> pageInfo = new PageInfo<>(quesList);
        PaginationVO<MdMedTbFd> paginationVo = new PaginationVO(pageInfo.getTotal(), pageInfo.getList());
        return paginationVo;
    }

    @Override
    public List<MdMedTbFd> findTbDimField(String idMedTb) {
        return mdMedTbFdMapper.findTbDimField(idMedTb);
    }
}
